/**
 *
 */
package com.evil.DB_Utils;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/******************************************
 * 工程名：Download<br>
 * 包名：com.evil.DB_Utils<br>
 * 时间：2016年6月10日 下午12:18:52<br>
 * 作者：白雨濃 evil<br>
 * 邮箱：evilbai@foxmail.com<br>
 * 内容：插入返回接口<br>
 ******************************************/
public interface InsertCallBack
{
    public abstract void onCallBack(Add add);

    public class Add
    {
        private PreparedStatement preparedStatement;

        public Add()
        {
            super();
        }

        public Add set(PreparedStatement preparedStatement)
        {
            this.preparedStatement = preparedStatement;
            return this;
        }

        /**
         * 添加
         *
         * @param s
         * @return
         */
        public void add(int index, String s)
        {
            try
            {
                preparedStatement.setString(index, s);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }

        }

        /**
         * 添加
         *
         * @param i
         * @return
         */
        public void add(int index, int i)
        {
            try
            {
                preparedStatement.setInt(index, i);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }

        }

        /**
         * 添加
         *
         * @param date
         * @return
         */
        public void add(int index, Date date)
        {
            try
            {
                preparedStatement.setDate(index, date);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }

        }

        /**
         * 添加
         *
         * @param f
         * @return
         */
        public void add(int index, float f)
        {
            try
            {
                preparedStatement.setFloat(index, f);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }

        }

        /**
         * 添加
         *
         * @param object
         * @return
         */
        public void add(int index, Object object)
        {
            try
            {
                preparedStatement.setObject(index, object);
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
        }

        public String build()
        {
            String count = "";
            try
            {
                count = preparedStatement.executeUpdate() + "";
            }
            catch (SQLException e)
            {
                if (e.toString().indexOf("PRIMARY") > 0)
                    return ErrorInfo.ERROR_EXIST_PRIMARY.toString();
                else if (e.toString().endsWith(
                        "ON DELETE NO ACTION ON UPDATE NO ACTION)"))
                    return ErrorInfo.ERROR_NO_FOREIGN_KEY.toString();
                else if (e.toString().indexOf(
                        "No value specified for parameter") > 0)
                    return ErrorInfo.ERROR_NOVALUE_FORPARAMETER.toString();
                else if (e.toString().indexOf("Parameter index out of range") > 0)
                    return ErrorInfo.ERROR_MOREVALUE_FORPARAMETER.toString();
                else
                    e.printStackTrace();
            }
            return count;
        }

        /**
         * 关闭流
         */
        public void close()
        {
            try
            {
                preparedStatement.close();
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
        }

    }
}
